﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Interfaces;
using Controller;

namespace GUI
{
    public partial class frmSeOpgaver : Form
    {
        List<Iansat> mekanikerListe = null;
        List<Iordre> ordreListe = null;
        List<Iopgave> opgaveListe = null;
        Iansat valgtMekaniker = null;
        Iordre valgtOrdre = null;
        Iopgave valgtOpgave = null;
        int valgtOrdreNr = 0;
        int valgtOpgaveNr = 0;
        

        public frmSeOpgaver()
        {
            InitializeComponent();
        }

        private void frmSeOpgaver_Load(object sender, EventArgs e)
        {
            AnsatController ac = new AnsatController();
            mekanikerListe = ac.HentAlleMekanikere();

            foreach (Iansat item in mekanikerListe)
            {
                cmbMekanikere.Items.Add(item.Navn);
            }
        }

        private void cmbMekanikere_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnPaabegyndOpgave.Enabled = false;
            lvOrdreListe.Items.Clear();
            lvOpgaveListe.Items.Clear();

            foreach (Iansat mekaniker in mekanikerListe) {
                if (mekaniker.Navn == cmbMekanikere.SelectedItem.ToString())
                {
                    valgtMekaniker = mekaniker;
                }
            }
            
            opdaterOrdreListe(valgtMekaniker.Medarbejdernr);
        }

        private void opdaterOrdreListe(int medarbejderNummer)
        {
            lvOrdreListe.Items.Clear();
            OrdreController oc = new OrdreController();
            KundeController kc = new KundeController();      
            
            ordreListe = oc.HentAlleUafsluttedeOrdrerDenAnsatteErBooketTil(medarbejderNummer);
            
            lvOrdreListe.Items.Clear();
            Ikunde kunde;
            foreach (Iordre ordre in ordreListe)
            {
                kunde = kc.hentKunde(ordre.Kundenummer);

                string[] str = { Convert.ToString(ordre.Ordrenummer), Convert.ToString(ordre.Ordredato), kunde.Maerke, kunde.Navn };
                ListViewItem lvItem = new ListViewItem(str);
                lvOrdreListe.Items.Add(lvItem);
            }

        }

        private void lvOrdreListe_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvOrdreListe.SelectedItems.Count > 0)
            {
                valgtOrdreNr = Convert.ToInt32(lvOrdreListe.SelectedItems[0].SubItems[0].Text);

                opdaterOpgaveListe(valgtMekaniker.Medarbejdernr, valgtOrdreNr);

                foreach (Iordre ordre in ordreListe)
                {
                    if (ordre.Ordrenummer == valgtOrdreNr)
                    {
                        valgtOrdre = ordre;
                    }
                }
            }
        }

        private void opdaterOpgaveListe(int medarbejderNummer, int ordreNr)
        {
                OpgaveController oc = new OpgaveController();
                opgaveListe = oc.HentMedarbejderensOpgaverForOrdre(medarbejderNummer, ordreNr);

                lvOpgaveListe.Items.Clear();
                foreach (Iopgave opgave in opgaveListe)
                {
                    string[] str = {Convert.ToString(opgave.Opgavenummer), opgave.Navn, opgave.Beskrivelse };
                    ListViewItem lvItem = new ListViewItem(str);
                    lvOpgaveListe.Items.Add(lvItem);
                }

        }
        
        private void lvOpgaveListe_SelectedIndexChanged(object sender, EventArgs e)
        {
            valgtOpgaveNr = Convert.ToInt32(lvOpgaveListe.SelectedItems[0].SubItems[0].Text);

            foreach (Iopgave opgave in opgaveListe)
            {
                if (opgave.Opgavenummer == valgtOpgaveNr)
                {
                    valgtOpgave = opgave;
                }
            }
            
            btnPaabegyndOpgave.Enabled = true;

        }

        private void btnPaabegyndOpave_Click(object sender, EventArgs e)
        {
            frmUdfoerOpgave frmUdfoerOpgave = new frmUdfoerOpgave(valgtOrdre, valgtOpgave);
            frmUdfoerOpgave.ShowDialog();
        }
    }
}
